home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Ham Radio
/
Ham Radio CD-ROM (Emerald Software) (1995).ISO
/
ant
/
antenna2
/
linphase.bas
< prev
next >
Wrap
BASIC Source File
|
1986-08-12
|
3KB
|
89 lines
10 CLS
20 KEY OFF:KEY 10,""
30 ' MAY 29, 1986
40 T$="ARRAY FACTOR OF N LINEAR ELEMENTS":LC=1:GOSUB 880
50 ' AHMAD FAIZAL MOHD ZAIN
60 '
70 PRINT: PRINT:PRINT:PRINT
80 DIM Y(360)
90 PI=3.141592
100 DEF FN LOGTEN(X)=LOG(X)/LOG(10)
110 DEF FN F(PSI)=(SIN(N*PSI/2)/SIN(PSI/2))/N
120 DEF FN G(PSI)=COS(N*PSI/2)/COS(PSI/2)
130 INPUT "PHASE SHIFT IN DEGREES";ALP
140 INPUT "SEPERATION IN LAMBDA ";D
150 INPUT "# OF ELEMENTS ";N
160 SCREEN 2,0:CLS:KEY OFF
170 LOCATE 25,1:PRINT"F10=QUIT <cur up>=increase phase <cur down>=decrease phase"
180 '
190 ALPR=ALP*PI/180
200 TT=-ALPR/(2*PI*D)
210 IF TT=1 THEN THE0=0:GOTO 250
220 IF TT=-1 THEN THE0=180:GOTO 250
230 THE0=1.570796-ATN(TT/SQR(1-TT*TT))
240 THE0=THE0*180/PI
250 VIEW (126,23)-(516,185),,2
260 PSI0=ALPR+2*PI*D*COS(0)
270 YMAX=0
280 LOCATE 1,10:PRINT USING "NUMBER OF ELEMENTS : ###";N;
290 LOCATE 1,40:PRINT USING "ELEMENTS SPACING : ##.##";D;:PRINT" LAMBDA"
300 LOCATE 2,5:PRINT USING "PROGRESSIVE PHASE SHIFT : ####.##";ALP;:PRINT" DEG"
310 LOCATE 2,46:PRINT USING "SCAN ANGLE : ####.##";THE0;:PRINT" DEG"
320 GOSUB 470
330 A$=INKEY$:IF LEN(A$)<>2 THEN 330
340 AN=ASC(MID$(A$,2,1))
350 IF AN=72 THEN ALP=ALP+10:GOTO 420
360 IF AN=80 THEN ALP=ALP-10:GOTO 420
370 IF AN=77 THEN ALP=ALP+5:GOTO 420
380 IF AN=75 THEN ALP=ALP-5:GOTO 420
390 IF AN=68 THEN GOSUB 820
400 GOTO 330
410 '
420 LOCATE 1,10:PRINT USING "NUMBER OF ELEMENTS : ###";N;
430 LOCATE 1,40:PRINT USING "ELEMENTS SPACING : ##.##";D;:PRINT" LAMBDA"
440 LOCATE 2,5:PRINT USING "PROGRESSIVE PHASE SHIFT : ####.##";ALP;:PRINT" DEG"
450 LOCATE 2,46:PRINT USING "SCAN ANGLE : ####.##";THE0;:PRINT" DEG"
460 GOTO 190
470 '
480 LOCATE 13,36:PRINT"PLEASE WAIT"
490 FOR TH=0 TO 180
500 X=TH*PI/180
510 PSI=ALPR+2*PI*D*COS(X)
520 IF SIN(PSI/2)=0 THEN Y(TH)=1:GOTO 550
530 Y(TH)=ABS(FN F(PSI))
540 Y(360-TH)=Y(TH)
550 IF Y(TH)>YMAX THEN YMAX=Y(TH)
560 NEXT TH
570 '
580 WINDOW (-YMAX,-YMAX)-(YMAX,YMAX)
590 '
600 CLS
610 LOCATE 13,12:PRINT"180"
620 LOCATE 13,67:PRINT"0"
630 CIRCLE (0,0),YMAX,1
640 CIRCLE (0,0),.75*YMAX,1
650 CIRCLE (0,0),.5*YMAX,1
660 CIRCLE (0,0),.25*YMAX,1
670 LINE (-YMAX,0)-(YMAX,0),1
680 LINE (0,YMAX)-(0,-YMAX),1
690 LINE (-.707*YMAX,.707*YMAX)-(.707*YMAX,-.707*YMAX),1
700 LINE (-.707*YMAX,-.707*YMAX)-(.707*YMAX,.707*YMAX),1
710 '
720 IF PSI0=0 THEN PSET (YMAX,0) ELSE PSET (FN F(PSI0),0)
730 FOR TH=0 TO 360
740 XX=TH*PI/180
750 X=Y(TH)*COS(XX)
760 Y=Y(TH)*SIN(XX)
770 LINE -(X,Y),2
780 NEXT TH
790 RETURN
800 LOCATE 1,1
810 '
820 T$="DO YOU WANT TO RUN AGAIN (Y/N)? ":LC=25:GOSUB 880
830 AN$=INKEY$
840 IF AN$="Y" OR AN$="y" THEN RUN
850 IF AN$="N" OR AN$="n" THEN END
860 GOTO 820
870 :
880 LOCATE LC,(80-LEN(T$))/2+1:PRINT T$;:RETURN 'SUBROUTINE TO CENTRE TEXT